import dayjs from 'dayjs'
import numeral from 'numeral'

/**
 * 格式化时间（默认输出当然时间，格式 YYYY-MM-DD HH:mm:ss）
 *
 * @param date 时间
 * @param format 格式
 */
export const formatDate = (
  date?: number | string | Date,
  format: string = 'YYYY-MM-DD HH:mm:ss'
): string => {
  const d = dayjs(date)
  if (date !== undefined && d.isValid()) {
    return d.format(format)
  }
  return ''
}

/**
 * 保留数字精度
 *
 * @param number 数字
 * @param precision 精度
 */
export const fixedNumber = (number: number, precision: number = 0): number => {
  let format = '0'
  if (precision > 0) {
    format += '.' + new Array(precision + 1).join('0')
  }
  return parseFloat(numeral(number).format(format))
}

/**
 * 格式化货币金额（默认输出 ￥0.00）
 *
 * @param amount 金额
 * @param ratio 换算比例
 * @param symbol 货币符号
 */
export const formatCurrency = (
  amount: number = 0,
  ratio: number = 1,
  symbol: string = '￥'
): string => {
  if (amount || amount === 0) {
    return numeral(amount * ratio)
      .format('$0,0.00')
      .replace(/\$/, symbol)
  }
  return ''
}
